package model

import (
	"ginblog/utils/errormsg"
)

// Category  : 类别、种类、范畴（最常见的用法）
type Category struct {
	ID       int       `gorm:"primary_key;AUTO_INCREMENT" json:"id" `
	Name     string    `gorm:"type:varchar(20)" json:"name"`
	Articles []Article `gorm:"foreignKey:Cid"` // 一个分类下有多篇文章
}

//var code int

// CheckCate 查询分类是否存在
func CheckCate(categoryName string) int {
	var data Category
	db.Select("id").Where("username = ?", categoryName).First(&data)
	if data.ID > 0 {
		return errormsg.ERROR_CATENAME_USED //用户名称已存在
	}
	return errormsg.SUCCESS // 成功状态码
}

// AddCate 增加分类
func AddCate(Cate *Category) int {
	err := db.Create(Cate).Error
	if err != nil {
		return errormsg.ERROR
	}
	return errormsg.SUCCESS
}

// GetCate 获取分类列表
func GetCate(pageSize int, pageNum int) ([]Category, int64) {
	var categorys []Category
	var total int64
	err := db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&categorys).Count(&total).Error
	//offset 里面的参数表示查询操作要调过的数据
	if err != nil {
		return nil, 0
	}
	return categorys, total
}

// DeleteCate 删除分类
func DeleteCate(id int) int {
	err := db.Where("id = ?", id).Delete(&Category{}).Error
	if err != nil {
		return errormsg.ERROR
	}
	return errormsg.SUCCESS
}

// UpdateCate 编辑分类
func UpdateCate(id int, cate *Category) int {
	err = db.Model(&Category{}).Where("id = ?", id).Updates(cate).Error
	if err != nil {
		return errormsg.ERROR
	}
	return errormsg.SUCCESS
}
